<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilplmi: xplmi_util.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilplmi
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xplmi__util_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xplmi_util.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file which contains the code which interfaces with the CRP. </p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date        Changes
</p>
<hr/>
<p>
1.00  kc   02/21/2017 Initial release
1.01  bsv  04/18/2019 Added support for NPI readback and CFI readback
      kc   04/26/2019 Updated Delay and Poll timeout based on timers
      rm   06/27/2019 Added APIs for safety register writes
      vnsl 07/19/2019 Added XPlmi_MemCmp API to check for PPK and SPK integrity
1.02  bsv  02/17/2020 Added 64-bit / 128-bit safety write APIs for xilsem
      bsv  04/04/2020 Code clean up
1.03  kc   06/22/2020 Minor updates to PrintArray for better display
      kc   08/17/2020 Added redundancy checks to XPlmi_MemCmp
      bsv  09/04/2020 Added checks to validate input params for XPlmi_Strcat
                      and XPlmi_Strcpy
      bm   10/14/2020 Code clean up
      td   10/19/2020 MISRA C Fixes
1.04  bsv  11/05/2020 Added prints while polling in UtilPoll APIs
      td   11/23/2020 MISRA C Rule 17.8 Fixes
      bm   02/16/2021 Renamed print functions used in XPlmi_PrintArray
      bm   03/04/2021 Add VerifyAddrRange API
      bm   03/17/2021 Mark reserved address region as invalid in
                      VerifyAddrRange API
1.05  td   07/08/2021 Fix doxygen warnings
      bsv  07/16/2021 Fix doxygen warnings
      bsv  08/02/2021 Code clean up to reduce size
      bsv  09/05/2021 Disable prints in slave boot modes in case of error
1.06  bm   07/06/2022 Refactor versal and versal_net code
      bm   07/24/2022 Set PlmLiveStatus during boot time
1.07  ng   11/11/2022 Updated doxygen comments
      bm   01/03/2023 Notify Other SLRs about Secure Lockdown
      ng   03/12/2023 Fixed Coverity warnings
      ng   03/30/2023 Updated algorithm and return values in doxygen comments
1.08  sd   02/19/2025 Added multiboot store and restore APIs for platforms
                      with A/B firmware
      sd   03/17/2025 Added multiboot clear API for platforms with A/B firmware</pre><pre></pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaa6f19eeebb4a42d17f8e2f62b01b0080"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gaa6f19eeebb4a42d17f8e2f62b01b0080">XPlmi_UtilRMW</a> (u32 RegAddr, u32 Mask, u32 Value)</td></tr>
<tr class="memdesc:gaa6f19eeebb4a42d17f8e2f62b01b0080"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function will Read, Modify and Write to a register.  <a href="group__xilplmi__server__apis.html#gaa6f19eeebb4a42d17f8e2f62b01b0080">More...</a><br/></td></tr>
<tr class="separator:gaa6f19eeebb4a42d17f8e2f62b01b0080"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabcc76ee00f04f9e7586c5e0ab6c5a9c8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gabcc76ee00f04f9e7586c5e0ab6c5a9c8">XPlmi_UtilPoll</a> (u32 RegAddr, u32 Mask, u32 ExpectedValue, u32 TimeOutInUs, void(*ClearHandler)(void))</td></tr>
<tr class="memdesc:gabcc76ee00f04f9e7586c5e0ab6c5a9c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function polls a register till the masked bits are set to expected value or till timeout occurs.  <a href="group__xilplmi__server__apis.html#gabcc76ee00f04f9e7586c5e0ab6c5a9c8">More...</a><br/></td></tr>
<tr class="separator:gabcc76ee00f04f9e7586c5e0ab6c5a9c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ce17d2d9dd4664486f0507a0554baa7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga4ce17d2d9dd4664486f0507a0554baa7">XPlmi_UtilPoll64</a> (u64 RegAddr, u32 Mask, u32 ExpectedValue, u32 TimeOutInUs)</td></tr>
<tr class="memdesc:ga4ce17d2d9dd4664486f0507a0554baa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function polls a 64 bit address till the masked bits are set to expected value or till timeout occurs.  <a href="group__xilplmi__server__apis.html#ga4ce17d2d9dd4664486f0507a0554baa7">More...</a><br/></td></tr>
<tr class="separator:ga4ce17d2d9dd4664486f0507a0554baa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga37b89dae983863fe5532461884763916"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga37b89dae983863fe5532461884763916">XPlmi_UtilPollForMask</a> (u32 RegAddr, u32 Mask, u32 TimeOutInUs)</td></tr>
<tr class="memdesc:ga37b89dae983863fe5532461884763916"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function polls a 64 bit register till the masked bits are set to expected value or till timeout occurs.  <a href="group__xilplmi__server__apis.html#ga37b89dae983863fe5532461884763916">More...</a><br/></td></tr>
<tr class="separator:ga37b89dae983863fe5532461884763916"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf4d0e99ec9cbb522cf183a747468c595"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gaf4d0e99ec9cbb522cf183a747468c595">XPlmi_UtilPollForMask64</a> (u32 HighAddr, u32 LowAddr, u32 Mask, u32 TimeOutInUs)</td></tr>
<tr class="memdesc:gaf4d0e99ec9cbb522cf183a747468c595"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function polls a 64 bit register till the masked bits are set to expected value or till timeout occurs.  <a href="group__xilplmi__server__apis.html#gaf4d0e99ec9cbb522cf183a747468c595">More...</a><br/></td></tr>
<tr class="separator:gaf4d0e99ec9cbb522cf183a747468c595"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa820e2f15149e48489678a38b69d2a58"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gaa820e2f15149e48489678a38b69d2a58">XPlmi_UtilWrite64</a> (u32 HighAddr, u32 LowAddr, u32 Value)</td></tr>
<tr class="memdesc:gaa820e2f15149e48489678a38b69d2a58"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function writes to a 64 bit address.  <a href="group__xilplmi__server__apis.html#gaa820e2f15149e48489678a38b69d2a58">More...</a><br/></td></tr>
<tr class="separator:gaa820e2f15149e48489678a38b69d2a58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3bf28338a8becd4ef0e19689fb0a7116"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga3bf28338a8becd4ef0e19689fb0a7116">XPlmi_PrintArray</a> (u16 DebugType, const u64 BufAddr, u32 Len, const char *Str)</td></tr>
<tr class="memdesc:ga3bf28338a8becd4ef0e19689fb0a7116"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used to print the entire array in bytes as specified by the debug type.  <a href="group__xilplmi__server__apis.html#ga3bf28338a8becd4ef0e19689fb0a7116">More...</a><br/></td></tr>
<tr class="separator:ga3bf28338a8becd4ef0e19689fb0a7116"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabca9a90771dbe58c7df671842aa33c13"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gabca9a90771dbe58c7df671842aa33c13">XPlmi_UtilPollNs</a> (u32 RegAddr, u32 Mask, u32 ExpectedValue, u64 TimeOutInNs, void(*ClearHandler)(void))</td></tr>
<tr class="memdesc:gabca9a90771dbe58c7df671842aa33c13"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function polls a register till the masked bits are set to expected value or till timeout occurs.  <a href="group__xilplmi__server__apis.html#gabca9a90771dbe58c7df671842aa33c13">More...</a><br/></td></tr>
<tr class="separator:gabca9a90771dbe58c7df671842aa33c13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga177c83fd417da8aca002bd7e05d0e8a6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga177c83fd417da8aca002bd7e05d0e8a6">XPlmi_StoreMultiboot</a> (void)</td></tr>
<tr class="memdesc:ga177c83fd417da8aca002bd7e05d0e8a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a placeholder function used in case the feature is disabled.  <a href="group__xilplmi__server__apis.html#ga177c83fd417da8aca002bd7e05d0e8a6">More...</a><br/></td></tr>
<tr class="separator:ga177c83fd417da8aca002bd7e05d0e8a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga80e6ce25993e741daa784adae7d842de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#ga80e6ce25993e741daa784adae7d842de">XPlmi_RestoreMultiboot</a> (void)</td></tr>
<tr class="memdesc:ga80e6ce25993e741daa784adae7d842de"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a placeholder function used in case the feature is disabled.  <a href="group__xilplmi__server__apis.html#ga80e6ce25993e741daa784adae7d842de">More...</a><br/></td></tr>
<tr class="separator:ga80e6ce25993e741daa784adae7d842de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3ca0a6ea208a86da00027ac5de4fae1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__xilplmi__server__apis.html#gaf3ca0a6ea208a86da00027ac5de4fae1">XPlmi_ClearMultiboot</a> (void)</td></tr>
<tr class="memdesc:gaf3ca0a6ea208a86da00027ac5de4fae1"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a placeholder function used in case the feature is disabled.  <a href="group__xilplmi__server__apis.html#gaf3ca0a6ea208a86da00027ac5de4fae1">More...</a><br/></td></tr>
<tr class="separator:gaf3ca0a6ea208a86da00027ac5de4fae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
